<!DOCTYPE html>
<html lang="en">
  <head><meta name="generator" content="Hexo 3.9.0">
    <meta charset="utf-8">

    <title>easy java document | easy-java </title>
    <meta name="description" content>
    <meta name="viewport" content="width=device-width, initial-scale=1">

    

    <!-- fonts -->
    <link href="//fonts.googleapis.com/css?family=Source+Sans+Pro:400,700" rel="stylesheet">
    <link href="//fonts.googleapis.com/css?family=Ubuntu:300,400,500,600,700" rel="stylesheet">

    <!-- stylesheets -->
    <link rel="stylesheet" href="/ejdoc/style/doc.css">

    <!-- favicon -->
    <link rel="icon" href="/ejdoc/images/favicon.ico">

    

  </head>
  <body>

   <script>window.__INITIAL_STATE__ = {"page":{"title":"easy-java","path":"wf3.html"},"data":{"navigation":{"logo":{"text":"Easy Java","type":"link","path":"index.html"},"main":[{"text":"工作流与业务流集合","type":"link","path":"wf3.html"},{"text":"一对多关联V2.0","type":"link","path":"o2m.html"}]},"navigation.yaml":"{\n  \"logo\": {\n    \"text\": \"Easy Java\",\n    \"type\": \"link\",\n    \"path\": \"index.html\"\n  },\n  \"main\": [\n    {\n        \"text\": \"如何让你的项目快人N步?\",\n        \"type\": \"link\",\n        \"path\": \"index.html\"\n    },\n    {\n        \"text\": \"起步（从无到有）\",\n        \"type\": \"link\",\n        \"path\": \"build-code.html\"\n    },\n    {\n        \"text\": \"项目演示地址\",\n        \"type\": \"link\",\n        \"path\": \"show.html\"\n    },\n    {\n        \"text\": \"安装\",\n        \"type\": \"link\",\n        \"path\": \"install.html\"\n    },\n    {\n        \"text\": \"功能介绍\",\n        \"type\": \"link\",\n        \"path\": \"function1.html\"\n    },\n    {\n        \"text\": \"动态工作流-内置表单\",\n        \"type\": \"link\",\n        \"path\": \"workflow1.html\"\n    },\n    {\n        \"text\": \"动态工作流-外置表单\",\n        \"type\": \"link\",\n        \"path\": \"workflow2.html\"\n    },\n    {\n        \"text\": \"分布式定时任务\",\n        \"type\": \"link\",\n        \"path\": \"timer.html\"\n    },\n    {\n        \"text\": \"升级日志\",\n        \"type\": \"link\",\n        \"path\": \"log-20200517.html\"\n    },\n    {\n        \"text\": \"计划\",\n        \"type\": \"link\",\n        \"path\": \"future.html\"\n    },\n    {\n        \"text\": \"有Bug及时发我完善\",\n        \"type\": \"label\"\n    }\n  ]\n}\n"},"config":{"timezone":"UTC","root":"/ejdoc/","time_format":"HH:mm:ss","theme":"../node_modules/hexo-theme-doc","theme_config":{"swagger_ui":{"version":2,"permalinks":true,"api_explorer":true,"download":"Download specification","show_extensions":false,"deep_linking":true,"display_operation_id":false,"doc_expansion":"none"},"search":{"skip":false,"background":false,"route":"/lunr.json"},"favicon":"images/favicon.ico"}}}</script>

    <div id="react-navigation-root"><div class="doc-navigation" data-reactroot><nav class="doc-navbar"><a href="/ejdoc/index.html" class="doc-navbar__logo"><img src="/ejdoc/images/logo.png" class="doc-navbar__logo__img"><span class="doc-navbar__logo__text">Easy Java</span></a><i class="dc-icon dc-icon--close dc-icon--interactive doc-sidebar-close doc-navbar__sidebar-close doc-navbar__sidebar-close--desktop"></i><i class="dc-icon dc-icon--menu dc-icon--interactive doc-sidebar-toggle doc-navbar__sidebar-toggle"></i></nav><nav class="doc-sidebar"><div class="doc-sidebar__vertical-menu"><i class="dc-icon dc-icon--menu dc-icon--interactive doc-sidebar-toggle doc-sidebar-toggle--primary doc-sidebar__vertical-menu__item"></i><i class="dc-icon dc-icon--search dc-icon--interactive doc-sidebar__vertical-menu__item doc-sidebar__vertical-menu__item--primary"></i></div><div class="doc-sidebar-content"><div class="doc-sidebar__search-form"></div><ul class="doc-sidebar-list"></ul></div></nav></div></div>
    <div class="doc-content">
  <div class="dc-page">
    <div class="dc-card">
      <div id="react-search-results-root"></div>
      <div id="page-content" class="doc-formatting">
        <h2 id="事件规则"><a href="#事件规则" class="headerlink" title="事件规则"></a>事件规则</h2><p>事件规则，采用一条规则对应多个部门，一个部门设计多人方式。如图所示。<br><img src="./images/wf/wf-rule-1.png" width="1000"><br>图：事件规则 <br></p>
<h2 id="网页设计器"><a href="#网页设计器" class="headerlink" title="网页设计器"></a>网页设计器</h2><pre><code>在Vue中集成Activiti网页设计器，为动态工作流研发作准备工作

以下，以‘city-test’为例说明，部署界面和流程设计器如下所示。
通过设计器设计好流程后，直接部署使用。
</code></pre><p><img src="./images/wf/wf-5.png" width="1000"><br>图：部署界面 <br><br><img src="./images/wf/wf-1.png" width="1000"><br>图：设计器 <br></p>
<h2 id="流程设计"><a href="#流程设计" class="headerlink" title="流程设计"></a>流程设计</h2><pre><code>系统设计了大量监听器，来监听流程执行过程，动态分配指派人员处理任务。监听器配置方法如下图所示。
监听器有：
assigneeListener：事件执行监听器。节点任务调用前，根据规则编号，创建业务系统部门任务和人员，同时返回部门和人员信息。
bindAnswerWfTaskListener：用户任务监听器。当给委托用户执行任务时调用，目的是绑定业务系统和工作流程单人执行任务。
appNoticeTaskListener：用户任务监听器。当给委托用户执行任务时调用，目的是给用户发通知。
taskCompleteListener： 节点任务完成监听器。修改业务系统子任务和人员任务状态。
mainTaskCompleteListener：任务完成监听器。修改业务系统事件和任务状态。
等等。
以下客流预警为例：
1，当流程执行到“3，指令发布”时，流程会先执行assigneeListener监听器，监听器中设置了事件规则编号，根据编号找到处理部门和人员信息，然后进行指派。
2，当流程将任务委托分配给指定人员时，调用appNoticeTaskListener监听器，给每个人发通知。
3，当节点任务完成时，调用节点任务完成监听器，修改业务系统子任务和人员任务状态。
4，任务进入下一个节点。因为“3，指令发布”后面有一个分支。所以在这个节点上可以动态增加一个配置信息：
{&apos;fork&apos;:&apos;approve&apos;, &apos;result&apos;:[true, false]}
这个json会返回给app等客户端，意思是app用户在处理任务时，要上传approve=true, 或approve=false。
工作流接收到信息，approve=false，就走下面的流，反之就上面的流。
5，关于“6人员增派”，涉及多机构联合并行执法。所以设计成子流程，每个机构一个子流程，相互独立运行。配置原理和普通节点类似。
</code></pre><p><img src="./images/wf/wf-listen.png" width="1000"><br>图: 监听器</p>
<h2 id="任务列表"><a href="#任务列表" class="headerlink" title="任务列表"></a>任务列表</h2><pre><code>以一个执行完成的流程为例
业务系统任务列表，上面部分是主任务，左下方是子任务，右下人是执行人员任务完成情况。
主任务列表，点流程实例ID, 可查看流程图。点流程日志可查看执行日志。
</code></pre><p><img src="./images/wf/wf-10.png" width="1000"></p>
<h2 id="流程图"><a href="#流程图" class="headerlink" title="流程图"></a>流程图</h2><p><img src="./images/wf/wf-11.png" width="1000"></p>
<h2 id="任务执行日志"><a href="#任务执行日志" class="headerlink" title="任务执行日志"></a>任务执行日志</h2><p><img src="./images/wf/wf-12.png" width="1000"></p>

        <div id="react-support-footer-root"></div>
      </div>
    </div>
  </div>
</div>

    


    

    <!-- js vendors -->
    <script src="//code.jquery.com/jquery-3.2.1.min.js" crossorigin="anonymous"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/lunr.js/2.1.0/lunr.min.js"></script>

    <!-- js source  -->
    <script src="/ejdoc/script/doc.js"></script>

    

  </body>
</html>
